// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Author: wsfuyibing <682805@qq.com>
// Date: 2024-07-24

package src

import "github.com/kataras/iris/v12"

// HandlerEntry
// is a handler entry.
//
//	entry := &HandlerEntry{
//	   Handler: handlers.UserLogin,
//	   Middlewares: {"name-1", "ExampleMiddleware"},
//	   Path: "/v1/user/login",
//	}
type HandlerEntry struct {
	// Handler
	// is a handler for http request.
	//
	// Example:
	//
	//  entry.Handler = handlers.UserLogin
	//
	//  entry.Handler = func(i iris.Context){
	//      framework.Do(i, user.Login)
	//  }
	Handler iris.Handler

	// Method
	// is a method name for http request like GET, POST etc. Empty string
	// for any request method.
	//
	// Example:
	//   entry.Method = "GET"
	//   entry.Method = "POST"
	Method string

	// Middlewares
	// is a list name for http request. Each name must be registered in
	// annotation middlewares.
	//
	// Example:
	//   entry.Middlewares = []string{
	//       "name-1",
	//       "ExampleMiddleware",
	//   }
	Middlewares []string

	// Path
	// is route uri for http request like follows.
	//
	// Example:
	//   entry.Path = "/v1/user/login"
	//   entry.Path = "/v1/user/id:int"
	//   entry.Path = "/v1/user/id:int/name:string"
	Path string
}
